package com.scy.java.Array;

import java.util.Arrays;

public class ArrayDemo3 {
    public static void main(String[] args) {
        arrReverse();
        arrayExpansion();
    }
    //数组缩容
    //数组扩容
    public static void arrayExpansion(){
        int[] arr = new int[]{1,2,3,4,5};
        //定义扩容后的数组
        //<<左移不分正负数，低位补0
        //将8左移三位，就是8乘2的三次方
        //>>表示右移，若为正数，则高位补0，若为负数，则高位补1
        //a>>b,表示a右移b位，就是a除以2的b次方
//         int n = 8<<3;//64
//        int[] newArr = new int[arr.length*2];
        int[] newArr = new int[arr.length << 1];
        for (int i = 0; i < arr.length; i++) {
            newArr[i] = arr[i];
        }
        System.out.println("新数组的元素："
                +Arrays.toString(newArr));
        //为数组赋值
        newArr[arr.length] = 10;
        newArr[arr.length+1] = 20;
        newArr[arr.length+2] = 30;
        System.out.println("新数组的元素："
                +Arrays.toString(newArr));

        //数组的缩容
        //Arrays.copyOf(目标数组，截取的下标)：截取指定长度的指定数组，返回新数组
        arr = Arrays.copyOf(newArr, newArr.length - 2);
        System.out.println("原数组的元素："
                +Arrays.toString(arr));
    }
    //位置互换
    public static void arrReverse(){
        int[] arr = {1,2,3,4,5};
        /*
        思路：首位对应位置的元素交换
        1、确定的交换次数：
            次数 = 数组长度/2
        2、谁和谁交换：
            int n = arr[i];
            arr[i] = arr[arr.length-1-i];
            arr[arr.length-1-i] = n;
         */
        for (int i = 0; i < arr.length/2; i++) {
            int n = arr[i];
            arr[i] = arr[arr.length-1-i];
            arr[arr.length-1-i] = n;
        }
        //遍历数组的第三种方式
        System.out.println("反转后的数组元素："+ Arrays.toString(arr));
    }
}
